import os

def create_project_structure(first_project):
    base_dir = os.path.join(os.getcwd(), first_project)
    dirs = [
        base_dir,
        os.path.join(base_dir, first_project),
        os.path.join(base_dir, first_project, 'subpackage'),
        os.path.join(base_dir, 'tests'),
        os.path.join(base_dir, 'docs'),
    ]
    
    files = {
        os.path.join(base_dir, first_project ): ['__init__.py', 'main.py', 'module1.py', 'module2.py'],
        os.path.join(base_dir, first_project, 'subpackage'): ['__init__.py', 'submodule1.py', 'submodule2.py'],
        os.path.join(base_dir, 'tests'): ['__init__.py', 'test_module1.py', 'test_module2.py'],
        base_dir: ['requirements.txt', 'setup.py', 'README.md']
    }
    
    for directory in dirs:
        os.makedirs(directory, exist_ok=True)
    
    for aa, file_names in files.items():
        for file_name in file_names:
            with open(os.path.join(aa, file_name), 'w') as f:
                f.write('')
    
    print(f"Project structure created at {base_dir}")

# Replace 'my_project' with your desired project name
create_project_structure('first_project')